# 并查集模板
# 快读
import sys
input=sys.stdin.readline

# 查找根节点
def findroot(x):
    # 普通做法，遍历到根节点，返回
    # while x!=p[x]:
    #     x=p[x]
    # return x

    # 路径压缩，全都指向根节点， 祖先 = 祖先
    if x==p[x]:
        return x
    # 根节点 = 根节点
    p[x]=findroot(p[x])
    return p[x]

# 合并， x,y
def merge(x,y):
    # 查找 x的根节点
    rootx=findroot(x)
    # 查找y的根节点
    rooty=findroot(y)
    # 指定y的根节点 指向 x的根节点
    p[rootx]=rooty

# 查询 是否是同一个根节点
def query(x,y):
    rootx=findroot(x)
    rooty=findroot(y)
    return rootx==rooty

n,m=map(int,input().split())
# 生成 p[i] = i 的 序列 表示 i的根节点是i
p=list(range(n+1))

for _ in range(m):
    op,x,y=map(int,input().split())
    if op==1:
        merge(x,y)
    else:
        if query(x,y):
            print("YES")
        else:
            print("NO")
